04 / 18

What are the basic operations of a Stack? (Push, Pop, Peek)

Stack Operations

javascript
  1. 1

    Push: inserts an element at the top.

  2. 2

    Pop: removes and returns the top element.

  3. 3

    Peek: reads the top element without modifying the stack.

  4. 4

    All three are typically O(1).

  5. 5

    Pop and Peek should define behavior for an empty stack, such as returning an error or throwing an exception.

Difficulty: 2/10
Topics: push, pop, peek

Scenario Questions

0-2 years experience
  1. 1

    How would you implement a simple stack in your preferred language to support push, pop, and peek? Walk me through the code.

  2. 2

    If you push elements 1, 2, 3 onto an empty stack and then call pop twice, what values do you get and what's left in the stack?

  3. 3

    What would happen if you call pop on an empty stack? How would you handle it?

2-5 years experience
  1. 1

    We have a function that uses a stack to evaluate a postfix expression, but it's throwing an exception on certain inputs. How would you debug the issue related to push/pop usage?

  2. 2

    When integrating a stack into a web server request handling pipeline, what trade‑offs would you consider between using a linked‑list based stack versus an array‑based stack?

  3. 3

    Suppose you need to add a 'max' operation that returns the current maximum in O(1). How would you extend the basic stack implementation?

5-8 years experience
  1. 1

    Our high‑throughput service uses a stack to manage reusable buffers. At peak load we see increased latency. What stack‑related bottlenecks would you investigate and how would you mitigate them?

  2. 2

    Design a thread‑safe stack for a multi‑producer, multi‑consumer scenario. What synchronization primitives would you choose and why?

  3. 3

    If the stack needs to persist across process restarts, what changes would you make to the push/pop semantics and storage strategy?

8+ years experience
  1. 1

    We are migrating a legacy monolith that uses custom stack structures scattered across modules to a microservices architecture. How would you approach consolidating stack behavior while minimizing cross‑team impact?

  2. 2

    At a company‑wide level, we want to enforce consistent error handling for stack underflow/overflow across all services. What architectural guidelines and tooling would you propose?

  3. 3

    Consider a distributed system where a logical stack spans multiple nodes. What design patterns could you use to maintain LIFO order and consistency, and what trade‑offs do they entail?

Follow-up Questions

  • How would you detect and report an underflow condition?
  • What factors influence your choice between an array‑based and a linked‑list‑based stack?
  • Can you state the time and space complexity of push, pop, and peek?